package com.example.jobseek;

import java.util.Vector;
import java.util.concurrent.ExecutionException;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

import com.example.jobseek.ListaInvitado.show;
import com.google.gson.Gson;

import domain.TrabajoVO;
import android.support.v7.app.ActionBarActivity;
import android.content.Intent;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class ResultadoBusqueda extends ActionBarActivity {
	TextView header;
	ArrayAdapter<TrabajoVO> adaptador;
	ListView listEmpleos;
	Bundle bundle;
	String res;
	String datos;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_resultado_busqueda);
		bundle = this.getIntent().getExtras();
		if (bundle!= null){
			res = bundle.getString("datosEmpleos");
		}
		
		header = new TextView(getBaseContext());
		header.setText("Lista de Empleos");
		header.setTextColor(Color.BLACK);
		
		listEmpleos = (ListView) findViewById(R.id.listView1);
		listEmpleos.addHeaderView(header);
		
		
		TrabajoVO[] trabajos = new TrabajoVO[1];

		trabajos = (TrabajoVO[]) new Gson().fromJson(res,TrabajoVO[].class);
		adaptador = new ArrayAdapter<TrabajoVO>(this, android.R.layout.simple_list_item_1, trabajos);
		listEmpleos.setAdapter(adaptador);
		
		listEmpleos.setOnItemClickListener(new AdapterView.OnItemClickListener() {
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long i) {
				String dato = (String) listEmpleos.getItemAtPosition(position).toString();

				try {
					datos = new show().execute(dato).get();
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (ExecutionException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
				Intent intent = new Intent(ResultadoBusqueda.this, DetalleEmpleo.class);

				Bundle b = new Bundle();
				b.putString("titulo", dato);
				b.putString("datos", datos);
				intent.putExtras(b);
				startActivity(intent);

			}

		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.resultado_busqueda, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}
	
	class show extends AsyncTask<String, Void, String> {
		private static final String TAG = "listar";

		@Override
		protected String doInBackground(String... params) {
			String nombre = params[0];
			String result = "";

			try {

				result = obtenerDatosTrabajo(new TrabajoVO(nombre));

			} catch (Exception e) {
				Log.e(TAG, e.getCause().toString());
			}

			return result;
		}


	}
	
	public String obtenerDatosTrabajo(TrabajoVO oTrabajoVO) {
		String result = "";

		String method = "getDatosTrabajo";
		String TAG = method;
		Log.i("intentando enviar datos al ws usando: ", method);

		try {
			String SOAP_ACTION = util.Constantes.NAMESPACE + "#" + method;

			SoapObject request = new SoapObject(util.Constantes.NAMESPACE,
					method);

			Gson gson = new Gson();
            String trabajo = gson.toJson(oTrabajoVO);
 
            request.addProperty("json",trabajo);
			
			
			SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
					SoapEnvelope.VER12);

			envelope.setOutputSoapObject(request);

			envelope.addMapping(util.Constantes.NAMESPACE, "TrabajoVO",
					new TrabajoVO().getClass());

			HttpTransportSE transporte = new HttpTransportSE(
					util.Constantes.URL);
			transporte.debug = true;

			transporte.call(SOAP_ACTION, envelope);

			Log.i(TAG, "dump Request: " + transporte.requestDump);
			Log.i(TAG, "dump Response: " + transporte.responseDump);

			Vector response = (Vector) envelope.getResponse();
			result = (String)response.get(1);
			return result;

		} catch (Exception e) {
			e.printStackTrace();

		}

		return null;

	}
}
